home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / PROGRAM / TPL60N14.ARJ / ARITEST.PAS next >
Pascal/Delphi Source File  |  1992-05-01  |  6KB  |  219 lines

  1. PROGRAM AriTest;   { Copyright (c) 1990-1992 Norbert Juffa }
  2.  
  3. {$A+,B-,D-,E-,F-,G-,I-,L-,N-,O-,R-,S-,V-,X-}
  4.  
  5. USES Time;
  6.  
  7. VAR L: INTEGER;
  8.     I, J, ExecutionTime,
  9.     StorageTime, StorageTime2,
  10.     StorageTime3, Start: LONGINT;
  11.     X,Y, Z: REAL;
  12.     A, B, C: ARRAY [1..2900] OF REAL;
  13.     D: ARRAY [1..2900] OF LONGINT;
  14.  
  15.  
  16. FUNCTION Draw: INTEGER;
  17. BEGIN
  18.   IF Random < 0.5 THEN
  19.     Draw := -1
  20.   ELSE
  21.     Draw := 1;
  22. END;
  23.  
  24. BEGIN
  25.    WriteLn;
  26.    WriteLn ('Time for basic arithmetic functions');
  27.    WriteLn;
  28.    Write   ('Operation             │   Time TP ');
  29. {$IFDEF VER55}
  30.    Write   ('5.5');
  31. {$ENDIF}
  32. {$IFDEF VER50}
  33.    Write   ('5.0');
  34. {$ENDIF}
  35. {$IFDEF VER60}
  36.    Write   ('6.0');
  37. {$ENDIF}
  38.    WriteLn;
  39.    WriteLn ('──────────────────────┼───────────────');
  40.  
  41.    RandSeed := 13;
  42.  
  43.    Write ('Please wait! Initializing ...');
  44.  
  45.    FOR L := 1 TO 2900 DO BEGIN
  46.       A [L] := Exp (Random * 80-40);
  47.    END;
  48.    FOR L := 1 TO 2900 DO BEGIN
  49.       B [L] := Exp (Random * 8.8-4.4) * Draw;
  50.    END;
  51.    FOR L := 1 TO 2900 DO BEGIN
  52.       C [L] := Exp (Random * 20 - 10) * Draw;
  53.    END;
  54.    FOR L := 1 TO 2900 DO BEGIN
  55.       D [L] := Trunc (C[L]);
  56.       IF D [L] = 0 THEN
  57.          Inc (D[L]);
  58.    END;
  59.  
  60.    Write (#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8);
  61.  
  62.    Start := Clock;
  63.    FOR L := 1 TO 2900 DO BEGIN
  64.       I := J;
  65.    END;
  66.    StorageTime3 := Clock - Start;
  67.  
  68.    Start := Clock;
  69.    FOR L := 1 TO 2900 DO BEGIN
  70.       Y := X;
  71.    END;
  72.    StorageTime := Clock - Start;
  73.  
  74.    Start := Clock;
  75.    FOR L := 1 TO 2900 DO BEGIN
  76.       Y := X;
  77.       X := Y;
  78.    END;
  79.    StorageTime2 := Round (0.75*(Clock - Start));
  80.  
  81.    Start := Clock;
  82.    FOR L := 1 TO 2900 DO BEGIN
  83.       I := (D [L] * D [2901-L]);
  84.    END;
  85.    ExecutionTime := Clock - Start - StorageTime3;
  86.    WriteLn ('LONG-Mul              │', ExecutionTime/2.9:11:1, ' µs');
  87.    Start := Clock;
  88.    FOR L := 1 TO 2900 DO BEGIN
  89.       I := (D [L] DIV D [2901-L]);
  90.    END;
  91.    ExecutionTime := Clock - Start - StorageTime3;
  92.    WriteLn ('LONG-Div              │', ExecutionTime/2.9:11:1, ' µs');
  93.    Start := Clock;
  94.    FOR L := 1 TO 2900 DO BEGIN
  95.       I := Abs (D [L]);
  96.    END;
  97.    ExecutionTime := Clock - Start - StorageTime3;
  98.    WriteLn ('LONG-Abs              │', ExecutionTime/2.9:11:1, ' µs');
  99.  
  100.  
  101.    Start := Clock;
  102.    FOR L := 1 TO 2900 DO BEGIN
  103.       Y := D [L];
  104.    END;
  105.    ExecutionTime := Clock - Start - StorageTime;
  106.    WriteLn ('REAL-Float            │', ExecutionTime/2.9:11:1, ' µs');
  107.    Start := Clock;
  108.    FOR L := 1 TO 2900 DO BEGIN
  109.       Y := (C [L] + C [2901-L]);
  110.    END;
  111.    ExecutionTime := Clock - Start - StorageTime2;
  112.    WriteLn ('REAL-Add              │', ExecutionTime/2.9:11:1, ' µs');
  113.    Start := Clock;
  114.    FOR L := 1 TO 2900 DO BEGIN
  115.       Y := (C [L] - C [2901-L]);
  116.    END;
  117.    ExecutionTime := Clock - Start - StorageTime2;
  118.    WriteLn ('REAL-Sub              │', ExecutionTime/2.9:11:1, ' µs');
  119.    Start := Clock;
  120.    FOR L := 1 TO 2900 DO BEGIN
  121.       Y := (C [L] * C [2901-L]);
  122.    END;
  123.    ExecutionTime := Clock - Start - StorageTime2;
  124.    WriteLn ('REAL-Mul              │', ExecutionTime/2.9:11:1, ' µs');
  125.    FOR L := 1 TO 2900 DO BEGIN
  126.       D [L] := D [L] DIV 7440;
  127.    END;
  128.    Start := Clock;
  129.    FOR L := 1 TO 2900 DO BEGIN
  130.       Y := (C [L] * D [2901-L]);
  131.    END;
  132.    ExecutionTime := Clock - Start - StorageTime2;
  133.    WriteLn ('REAL-Mul (Short)      │', ExecutionTime/2.9:11:1, ' µs');
  134.    Start := Clock;
  135.    FOR L := 1 TO 2900 DO BEGIN
  136.       Y := (C [L] / C [2901-L]);
  137.    END;
  138.    ExecutionTime := Clock - Start - StorageTime2;
  139.    WriteLn ('REAL-Div              │', ExecutionTime/2.9:11:1, ' µs');
  140.    Start := Clock;
  141.    FOR L := 1 TO 2900 DO BEGIN
  142.       Y := Sqr(C [L]);
  143.    END;
  144.    ExecutionTime := Clock - Start - StorageTime;
  145.    WriteLn ('REAL-Sqr              │', ExecutionTime/2.9:11:1, ' µs');
  146.    FOR L := 1 TO 2900 DO BEGIN
  147.       C [L] := D [L];
  148.    END;
  149.    Start := Clock;
  150.    FOR L := 1 TO 2900 DO BEGIN
  151.       Y := Sqr(C [L]);
  152.    END;
  153.    ExecutionTime := Clock - Start - StorageTime;
  154.    WriteLn ('REAL-Sqr (Short)      │', ExecutionTime/2.9:11:1, ' µs');
  155.    FOR L := 1 TO 2900 DO BEGIN
  156.       C [L] := Exp (Random * 20 - 10) * Draw;
  157.    END;
  158.    Start := Clock;
  159.    FOR L := 1 TO 2900 DO BEGIN
  160.       Y := Int ( C[L]);
  161.    END;
  162.    ExecutionTime := Clock - Start - StorageTime;
  163.    WriteLn ('REAL-Int              │', ExecutionTime/2.9:11:1, ' µs');
  164.    Start := Clock;
  165.    FOR L := 1 TO 2900 DO BEGIN
  166.       Y := Frac (C [L]);
  167.    END;
  168.    ExecutionTime := Clock - Start - StorageTime;
  169.    WriteLn ('REAL-Frac             │', ExecutionTime/2.9:11:1, ' µs');
  170.    Start := Clock;
  171.    FOR L := 1 TO 2900 DO BEGIN
  172.       I := Trunc (C [L]);
  173.    END;
  174.    ExecutionTime := Clock - Start - StorageTime3;
  175.    WriteLn ('REAL-Trunc            │', ExecutionTime/2.9:11:1, ' µs');
  176.    Start := Clock;
  177.    FOR L := 1 TO 2900 DO BEGIN
  178.       I := Round (C [L]);
  179.    END;
  180.    ExecutionTime := Clock - Start - StorageTime3;
  181.    WriteLn ('REAL-Round            │', ExecutionTime/2.9:11:1, ' µs');
  182.    Start := Clock;
  183.    FOR L := 1 TO 2900 DO BEGIN
  184.       Y := Sqrt (A [L]);
  185.    END;
  186.    ExecutionTime := Clock - Start - StorageTime;
  187.    WriteLn ('REAL-Sqrt             │', ExecutionTime/2.9:11:1, ' µs');
  188.    Start := Clock;
  189.    FOR L := 1 TO 2900 DO BEGIN
  190.       Y := Ln  (A [L]);
  191.    END;
  192.    ExecutionTime := Clock - Start - StorageTime;
  193.    WriteLn ('REAL-Ln               │', ExecutionTime/2.9:11:1, ' µs');
  194.    Start := Clock;
  195.    FOR L := 1 TO 2900 DO BEGIN
  196.       Y := Exp (B [L]);
  197.    END;
  198.    ExecutionTime := Clock - Start - StorageTime;
  199.    WriteLn ('REAL-Exp              │', ExecutionTime/2.9:11:1, ' µs');
  200.    Start := Clock;
  201.    FOR L := 1 TO 2900 DO BEGIN
  202.       Y := Sin (B[L]);
  203.    END;
  204.    ExecutionTime := Clock - Start - StorageTime;
  205.    WriteLn ('REAL-Sin              │', ExecutionTime/2.9:11:1, ' µs');
  206.    Start := Clock;
  207.    FOR L := 1 TO 2900 DO BEGIN
  208.       Y := Cos (B[L]);
  209.    END;
  210.    ExecutionTime := Clock - Start - StorageTime;
  211.    WriteLn ('REAL-Cos              │', ExecutionTime/2.9:11:1, ' µs');
  212.    Start := Clock;
  213.    FOR L := 1 TO 2900 DO BEGIN
  214.       Y := ArcTan (C[L]);
  215.    END;
  216.    ExecutionTime := Clock - Start - StorageTime;
  217.    WriteLn ('REAL-ArcTan           │', ExecutionTime/2.9:11:1, ' µs');
  218. END. { AriTest }
  219.